// pages/public_task/index.js
import API from "../../api/index";
import {
  getDate,
  comptime
} from '../../utils/common'

const app = getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    today:'',//今天
    start:0,//从第几条开始
    count:5,//显示条数
    level:'',//level=='root'||level=='user'就有管理员权限
    tab:['待认领','已领取'],
    tabIndex:0,
    taskList:[],
    claimedList:[],
    addData: {
      updateStatus:false,//是否修改状态
      updateId:'',//修改的任务id
      showmore:false,//是没有更多了
      dataStart:0,//从第几条开始
      count:100,//显示条数
      create_time:'',//创建时间
      addStatus: false,//新增
      addValue: '',//input新增任务名称
      endTime:'',//截止时间
     
      project: [],//选择项目
      projectType: 0,//选择项目类型
      projectStatus: false,//选择项目弹出层
      projectIndex: -1,//选择项目选中的下标
      time: {
        start: 0, // 开始时间是今天的前5年
        end: 365*2  // 结束时间是今天的N天后
      },
      date:'',//新建任务截止日期
      start:'',//日期插件开始时间
      end:''//日期插件结束时间
    },
    //认领
    claim:{
      claimStatus:false,//认领弹出层的状态
      time: {
        start: 0, // 开始时间是今天的前5年
        end: 365*2  // 结束时间是今天的N天后
      },
      date:'',//新建任务截止日期
      start:'',//日期插件开始时间
      end:'',//日期插件结束时间
      claimIndex:-1,
    }
  },
  toggle(e){
    this.setData({tabIndex:e.currentTarget.dataset.index})
    this.onPullDownRefresh()
  },
  update(e){
    let obj = e.currentTarget.dataset.obj
    console.log(obj)
    this.data.addData.project.forEach((element,index) => {
      if(element.title==obj.project.title){
          this.setData({ ['addData.projectIndex']:index})
      }
    });
    this.setData({
      ['addData.addValue']:obj.put_title,
      ['addData.message']:obj.remark,
      ['addData.date']:obj.end_time,
      ['addData.create_time']:obj.create_time
    })
    this.setData({ ['addData.addStatus']: true,['addData.updateStatus']: true,['addData.updateId']:obj.id})
    // ['addData.scheduleIndex']:obj.status==2?2:obj.status==3?1:0, //：0-全部，1-未开始，2-已结束，3-进行中
    // ['addData.projectIndex']:obj.type==1?1:obj.type==2?0:-1,//0-全部，1-工作项目，2-学习项目
  },
  //新增开启弹出层
  addshow: function () {
    this._projectList()
    this.setData({ ['addData.addStatus']: true,['addData.create_time']:getDate(3,this.data.today)})
  },
  //新增关闭弹出层
  addPopup: function () {
    this.setData({ ['addData.addStatus']: false ,['addData.date']: '',['addData.addValue']: '',['addData.message']: '',['addData.projectIndex']: -1 })
  },
  //切换项目类型
    updatePIndex() {
      this.setData({ ['addData.projectType']: this.data.addData.projectType == 0 ? '1' : '0' })
      this._projectList()
    },
    //选择项目开启弹出层
    projectshow: function () {
      this.setData({ ['addData.projectStatus']: true ,['addData.addStatus']: false })
    },
    //选择项目关闭弹出层
    projectPopup: function () {
      this.setData({ ['addData.projectStatus']: false,['addData.addStatus']: true })
    },
    //选中项目
    determine: function (e) {
      console.log(e)
      this.setData({ ['addData.projectIndex']: e.detail.index })
      this.projectPopup()
    },
    bindaddInput: function (e) {
      this.setData({
        ['addData.addValue']: e.detail.value
      })
    },
    //备注
    bindmessageInput(e) {
      this.setData({
        ['addData.message']: e.detail.value
      })
    },
  //新增任务提交
  addSubmit(e) {
    //保存+：储存该条任务后再新建一个未填写的任务弹窗 存储：存储后关闭弹窗
    //1保存 2 存储
    if (this.data.addData.date != '' &&this.data.addData.addValue != '' && this.data.addData.projectIndex > -1) {
      if (e.currentTarget.dataset.type == 1) {
        this._newCommonJob()
        this.setData({ ['addData.addValue']: '',['addData.date']: '',['addData.message']: '', ['addData.projectIndex']: -1 })
      } else {
        this._newCommonJob()
        this.setData({ ['addData.addValue']: '',['addData.date']: '',['addData.message']: '', ['addData.projectIndex']: -1 })
        this.addPopup()
      }
    }
  },
  //关闭详情弹出层
  onTogglePopup: function () {
    this.setData({ ['claim.claimStatus']: false ,['claim.date']: '' })
  },
  //认领
  claim(e){
    this.setData({ ['claim.claimIndex']: e.currentTarget.dataset.index,['claim.claimStatus']: true })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options){
    if(wx.getStorageSync('access_token')==''){
      wx.navigateTo({
        url:  "/pages/login/index",
      })
    }else{
      this.setData({
        level:app.globalData.userInfo!=null?app.globalData.userInfo.groups[0].level:''
      })
    }
    let { start, end } = this.data.addData.time
    let day1 = new Date().valueOf();
    let startTime = new Date(day1 - (24 * 60 * 60 * 1000 * start));
    let endTime = new Date(day1 + (24 * 60 * 60 * 1000 * end));
    let start1 = startTime.getFullYear() + '-' + (startTime.getMonth() + 1) + '-' + startTime.getDate();
    let end1 = endTime.getFullYear() + '-' + (endTime.getMonth() + 1) + '-' + endTime.getDate();
    this.setData({ ['addData.start']: start1,['addData.end']: end1 })
    this.claminStartTime()
  },
  claminStartTime(){
    let { start, end } = this.data.claim.time
    let day1 = new Date().valueOf();
    let startTime = new Date(day1 - (24 * 60 * 60 * 1000 * start));
    let endTime = new Date(day1 + (24 * 60 * 60 * 1000 * end));
    let start1 = startTime.getFullYear() + '-' + (startTime.getMonth() + 1) + '-' + startTime.getDate();
    let end1 = endTime.getFullYear() + '-' + (endTime.getMonth() + 1) + '-' + endTime.getDate();
    this.setData({ ['claim.start']: start1,['claim.end']: end1 })
  },
  //监听日期变化
  bindDateChange(e) {
    this.setData({ ['addData.date']: e.detail.value })
  },
  //监听日期变化
  bindDateChange2(e) {
    this.setData({ ['claim.date']: e.detail.value })
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    let date = getDate(2)
    this.setData({ today: date })
    this._projectList()
    this._commonJob()
  },
  //认领公域项目
  submit(){
    let {date,claimIndex,} = this.data.claim
    let _that = this
    if(date!=''){
      let obj = {
        get_title:this.data.taskList[claimIndex].put_title,
        expected_time:date.replace(/-/g,'/')
      }
      API.getCommonJob(this.data.taskList[claimIndex].id,obj).then(res=>{
        _that.setData({['claim.claimStatus']:false})
          setTimeout(() => {
            _that.onPullDownRefresh()
          }, 2000);
      })
    }
  },
  //获取任务列表
  _commonJob(){
    //	false-未领取，true-已领取
    let {tabIndex,count,start,taskList,claimedList} = this.data
    API.commonJob({is_getting:tabIndex==0?false:true,count:count,start:start}).then(res=>{
      // 
      res.data.items.forEach(element => {
          element.comptime = comptime(this.data.today,element.end_time)
      });
        if(tabIndex==0){
          this.setData({
            taskList:[...(start == 0 ? [] : taskList),...res.data.items],
            total:res.data.total
          })
          this.setData({showmore:this.data.taskList.length<this.data.total?false:true})
        }else{
            this.setData({
              claimedList:[...(start == 0 ? [] : claimedList),...res.data.items],
              total:res.data.total
            })
            this.setData({showmore:this.data.claimedList.length<this.data.total?false:true})
        }
    })
  },
  //选择项目列表
  _projectList(){
    let {dataStart,count,projectType,project} = this.data.addData
    let obj = {
      start:dataStart,//从第几条开始
      count:count,//显示条数
      type:projectType==0?1:projectType==1?2:projectType,//项目类型：0-全部，1-工作项目，2-学习项目
      status:0,//状态：0-全部，1-未开始，2-已结束，3-进行中	
      is_select:true//true-选择项目，false-项目列表
    }
    API.projectList(obj).then(res=>{
        console.log(res)
        this.setData({
          ['addData.project']:[...(dataStart == 0 ? [] : project),...res.data.items],
        })
    })
  },
  //新建公域任务
  _newCommonJob(){
    let {project,projectIndex,addValue,date,message} = this.data.addData
    let obj = {
      project_id:project[projectIndex].id,
      put_title:addValue,
      end_time:date.replace(/-/g,'/'),
      remark:message//备注
    }
    if(this.data.addData.updateStatus==true){//编辑
      API.commonEditor(this.data.addData.updateId,obj).then(res=>{
        this.setData({
          ['addData.updateId']:'',
          ['addData.updateStatus']:false
        })
        this.onPullDownRefresh()
      })
    }else{//新增
      API.newCommonJob(obj).then(res=>{
        this.onPullDownRefresh()
      })
    }
  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    this.setData({start:0})
    this._commonJob()
    
    setTimeout(function(){
      wx.stopPullDownRefresh()
    },1000)
  },
  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    let length = this.data.tabIndex==0?this.data.taskList.length:this.data.claimedList.length
    this.setData({start:length})
    if(length<this.data.total){
      this.setData({showmore:false,start:length})
      this._commonJob()
    }else{
      this.setData({showmore:true})
    }
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})